package SeminarioJavadoc;

import java.util.*;

/**
 * @author Antonio Vela
 * @version 1.0
 * */
public class Empleado {

	private static final int INICIO_EMPRESA = 0;
	private String nombre;
	private float salario;
	private int anioalta;

	/**
	 * Constructor de la clase Empleado
	 * 
	 * @param nombre
	 * @param salario
	 * @param anioalta
	 */
	protected Empleado(String nombre, float salario, int anioalta) {
		this.nombre = nombre;
		this.salario = salario;
		this.anioalta = anioalta;
	}

	protected String getNombre() {
		return nombre;
	}

	protected float getSalario() {
		return salario;
	}

	protected int getAnioalta() {
		return anioalta;
	}

	/**
	 * Metodo para incremetar el salario
	 * 
	 * @param subida
	 * 
	 * */
	protected void incsalario(float subida) {
		salario += subida;
	}

	/**
	 * Metodo para la fecha de alta y la fecha Actual
	 * 
	 * @param anioalta
	 */
	protected void setAnioAlta(int anioalta) {
		int anioActual = Calendar.YEAR;

		// int anioActual = 1990 + new Date().getYear();
		if (anioalta >= INICIO_EMPRESA && anioalta <= anioActual)
			this.anioalta = anioalta;
		else
			this.anioalta = anioActual;
	}

	/**
	 * Metodo que comprueba si es igual el objeto pasado por parametro con la
	 * clase empleado y con sus variables
	 * 
	 * @param obj
	 *            Parametro para el objeto introducido
	 **/
	public boolean equals(Object obj) {
		if (obj == null)
			return false;

		if (this == obj)
			return true;

		if (this.getClass() != obj.getClass())
			return false;

		Empleado empleado = (Empleado) obj;

		return this.nombre.equals(empleado.nombre)
				&& this.salario == empleado.salario
				&& this.anioalta == empleado.anioalta;
	}

	/**
	 * Metodo que muestra el contenido del objeto cuando se hace la llamada a
	 * este metodo
	 * */
	@Override
	public String toString() {
		return "Empleado [Nombre=" + nombre + ", Salario=" + salario
				+ ", Anio Alta=" + anioalta + ", Clase=" + getClass() + "]";
	}
}